local function Fn()
    local Fx = Class()


    function Fx:Init(NPC_BASE_LIB)
        ---------------------------------------------------------------------------------------------------------------------------

        -- if NPC_BASE_LIB.inst == nil or NPC_BASE_LIB.inst:HasTag("player") then
        --     return
        -- end
        
        function NPC_BASE_LIB:Combine_Tables(_tabe)
            if _tabe and type(_tabe) ==  "table" then
               local ret_table = {} 
                for k, child_table in pairs(_tabe) do
                    if child_table and type(child_table) == "table" then
                        for kk, v in pairs(child_table) do
                            table.insert(ret_table,v)
                        end
                    end
                end

                return ret_table
            end
        end

        function NPC_BASE_LIB:Get_Base_Food_List()
            return {
                "bird_egg","meat","monstermeat","meat_dried","cookedmonstermeat","monstermeat_dried",
                "smallmeat","smallmeat_dried","drumstick","froglegs","pondfish","pondeel",
                "oceanfish_medium_1_inv",
                "oceanfish_medium_2_inv",
                "oceanfish_medium_3_inv",
                "oceanfish_small_2_inv",
                "oceanfish_small_1_inv",
                "oceanfish_medium_9_inv",
                "oceanfish_medium_8_inv",
                "oceanfish_medium_7_inv",
                "oceanfish_medium_6_inv",
                "oceanfish_medium_5_inv",
                "oceanfish_medium_4_inv",
                "oceanfish_small_3_inv",
                "oceanfish_small_4_inv",
                "oceanfish_small_5_inv",
                "oceanfish_small_6_inv",
                "oceanfish_small_7_inv",
                "oceanfish_small_8_inv",
                "oceanfish_small_9_inv",
                "fishmeat",
                "barnacle",
                "wobster_sheller_land",
                "tallbirdegg",
                "fig",
                "milkywhites",
                "asparagus",
                "asparagus_cooked",
                "corn",
                "onion",
                "carrot",
                "potato",
                "tomato",
                "garlic",
                "pumpkin",
                "eggplant",
                "pepper",
                "red_cap",
                "green_cap",
                "blue_cap",
                "moon_cap",
                "cactus_meat",
                "cactus_flower",
                "cutlichen",
                "rock_avocado_fruit_ripe",
                "mandrake",
                "firenettles",
                "dragonfruit",
                "pomegranate",
                "watermelon",
                "durian",
                "berries",
                "berries_juicy",
                "cave_banana",
                "wormlight",
                "wormlight_lesser",
                "butterflywings",
                "moonbutterflywings",
                "butter",
                "goatmilk",
                "honey",
                "royal_jelly",
                "ice",
                "mole",
                "twigs",
                "boneshard",
                "nightmarefuel",
                "lightninggoathorn",
                "trunk_summer",
                "trunk_winter",
                "plantmeat",
                "batwing",
                "batnose",
                "humanmeat",
                "humanmeat_dried",
                "rottenegg",
                "kelp",
                "kelp_dried",
                "moon_tree_blossom",
                "petals",
                "petals_evil",
                "foliage",
                "lightbulb",
                "antchovies",
                "phlegm",
                "phlegm",
                "glommerfuel",
                "minotaurhorn",
                "deerclops_eyeball",
                "spoiled_food",
                "spoiled_fish",
                "spoiled_fish_small",
                "rock_avocado_fruit",
                "seeds",
                "spice_sugar",
                "spice_salt",
                "spice_chili",
                "spice_garlic",
            }
        end

        function NPC_BASE_LIB:Get_Cooked_Food_List()
            return {
                "shroomcake",
                "vegstinger",
                "shroomcake",
                "vegstinger",
                "bananajuice",
                "bunnystew",
                "bonestew",
                "meatballs",
                "kabobs",
                "honeyham",
                "unagi",
                "ceviche",
                "fishtacos",
                "californiaroll",
                "fishsticks",
                "seafoodgumbo",
                "surfnturf",
                "honeynuggets",
                "lobsterdinner",
                "lobsterbisque",
                "barnaclestuffedfishhead",
                "barnaclinguine",
                "barnaclepita",
                "barnaclesushi",
                "turkeydinner",
                "baconeggs",
                "sweettea",
                "mandrakesoup",
                "monsterlasagna",
                "guacamole",
                "frogglebunwich",
                "pepperpopper",
                "hotchili",
                "perogies",
                "flowersalad",
                "asparagussoup",
                "ratatouille",
                "salsa",
                "stuffedeggplant",
                "pumpkincookie",
                "potatotornado",
                "mashedpotatoes",
                "meatysalad",
                "leafymeatsouffle",
                "leafymeatburger",
                "leafloaf",
                "dragonpie",
                "jammypreserves",
                "fruitmedley",
                "trailmix",
                "jellybean",
                "taffy",
                "powcake",
                "butterflymuffin",
                "waffles",
                "icecream",
                "watermelonicle",
                "bananapop",
                "moqueca",
                "freshfruitcrepes",
                "bonesoup",
                "koalefig_trunk",
                "frozenbananadaiquiri",
                "frognewton",
                "figkabab",
                "figatoni",
                "monstertartare",
                "voltgoatjelly",
                "glowberrymousse",
                "potatosouffle",
                "frogfishbowl",
                "gazpacho",
                "dragonchilisalad",
                "nightmarepie",
                "beefalofeed",
                "justeggs",
                "veggieomlet",
                "talleggs",
                "beefalotreat",
            }
        end

        function NPC_BASE_LIB:Get_Equipments_Hand()
            return {
                "orangestaff",
                "yellowstaff",
                "greenstaff",
                "icestaff",
                "firestaff",
                "telestaff",
                "opalstaff",
                "firepen",
                "cane",
                "bullkelp_root",
                "whip",
                "spear",
                "fence_rotator",
                "spear_wathgrithr",
                "batbat",
                "trident",
                "tentaclespike",
                "hambat",
                "ruins_bat",
                "nightsword",
                "glasscutter",
                "nightstick",
                "boomerang",
                "shieldofterror",
                "staff_tornado",
                "balloonspeed",
                "balloonparty",
                "reskin_tool",
                "thurible",
                "cutless",
                "oar_monkey",
                "compass",
                "umbrella",
                "grass_umbrella",
                "minifan",
                "lantern",
                "redlantern",
                "goldenpitchfork",
                "golden_farm_hoe",
                "goldenshovel",
                "multitool_axe_pickaxe",
                "goldenpickaxe",
                "moonglassaxe",
                "goldenaxe",
                "malbatross_beak",
                "oar_driftwood",
                "bugnet",
                "fishingnet",
                "fishingrod",
                "oceanfishingrod",
                "chum",
                "diviningrod",
            }
        end

        function NPC_BASE_LIB:Get_Equipments_Hats()
            return {
                "minerhat",
                "molehat",
                "cookiecutterhat",
                "footballhat",
                "wathgrithrhat",
                "beehat",
                "ruinshat",
                "slurtlehat",
                "hivehat",
                "skeletonhat",
                "alterguardianhat",
                "eyemaskhat",
                "balloonhat",
                "polly_rogershat",
                "kelphat",
                "catcoonhat",
                "moonstorm_goggleshat",
                "deserthat",
                "goggleshat",
                "walterhat",
                "tophat",
                "featherhat",
                "flowerhat",
                "earmuffshat",
                "winterhat",
                "walrushat",
                "beefalohat",
                "red_mushroomhat",
                "blue_mushroomhat",
                "green_mushroomhat",
                "strawhat",
                "watermelonhat",
                "icehat",
                "rainhat",
                "eyebrellahat",
                "mermhat",
                "bushhat",
                "spiderhat",
                "batnosehat",
                "plantregistryhat",
                "nutrientsgoggleshat",
                "antlionhat",
                "monkey_mediumhat",
                "carnival_vest_a",
                "monkey_smallhat",
            }
        end

        function NPC_BASE_LIB:Get_Equipments_Body()
            return {
                "armorgrass",
                "armor_bramble",
                "armorwood",
                "armorruins",
                "armor_sanity",
                "armormarble",
                "armorsnurtleshell",
                "armordragonfly",
                "armorskeleton",
                "backpack",
                "piggyback",
                "krampus_sack",
                "spicepack",
                "icepack",
                "candybag",
                "seedpouch",
                "balloonvest",
                "trunkvest_summer",
                "raincoat",
                "sweatervest",
                "trunkvest_winter",
                "beargervest",
                "reflectivevest",
                "hawaiianshirt",
                "armorslurper",
                "carnival_vest_b",
                "carnival_vest_c",
                "amulet",
                "orangeamulet",
                "yellowamulet",
                "greenamulet",
                "blueamulet",
                "purpleamulet",
            }
        end

        function NPC_BASE_LIB:Get_Base_Materials()
            return {
                "cutgrass",
                "twigs",
                "log",
                "driftwood_log",
                "livinglog",
                "charcoal",
                "ash",
                "cutreeds",
                "lightbulb",
                "nightmarefuel",
                "rope",
                "marble",
                "goldnugget",
                "rocks",
                "nitre",
                "flint",
                "waxpaper",
                "papyrus",
                "boards",
                "moonrocknugget",
                "thulecite_pieces",
                "gears",
                "saltrock",
                "palmcone_scale",
                "moonglass",
                "moonglass_charged",
                "moonstorm_spark",
                "moonstorm_static_item",
                "transistor",
                "cutstone",
                "marblebean",
                "thulecite",
                "dustmeringue",
                "refined_dust",
                "houndstooth",
                "malbatross_feathered_weave",
                "malbatross_feather",
                "goose_feather",
                "feather_canary",
                "feather_crow",
                "feather_robin",
                "feather_robin_winter",
                "walrus_tusk",
                "boneshard",
                "fossil_piece",
                "horn",
                "lightninggoathorn",
                "gnarwail_horn",
                "deer_antler3",
                "klaussackkey",
                "minotaurhorn",
                "deerclops_eyeball",
                "slurtle_shellpieces",
                "cookiecuttershell",
                "pigskin",
                "tentaclespots",
                "slurper_pelt",
                "furtuft",
                "bearger_fur",
                "dragon_scales",
                "shroom_skin",
                "manrabbit_tail",
                "beefalowool",
                "spidereggsack",
                "spidergland",
                "silk",
                "beeswax",
                "honeycomb",
                "stinger",
                "beardhair",
                "steelwool",
                "lavae_egg",
                "lavae_egg_cracked",
                "lavae_cocoon",
                "mosquitosack",
                "phlegm",
                "slurtleslime",
                "glommerwings",
                "coontail",
            }
        end
        function NPC_BASE_LIB:Get_Special_Materials()
            return {
                "redgem",
                "orangegem",
                "yellowgem",
                "greengem",
                "bluegem",
                "purplegem",
                "opalpreciousgem",
                "redmooneye",
                "purplemooneye",
                "bluemooneye",
                "greenmooneye",
                "yellowmooneye",
                "orangemooneye",
                "thulecite",
                "deerclops_eyeball",
                "lightninggoathorn",
                "malbatross_feather",
                "moonrockseed",
                "hermit_pearl",
                "messagebottle",
                "eyeturret_item",
                "lifeinjector",
                "bandage",
                "shadowheart",
                "alterguardianhatshard",
                "featherfan",
            }
        end
        ---------------------------------------------------------------------------------------------------------------------------
    end

    return Fx
end

return Fn